定长数组我们在这里就不讨论了,想要知道如何定义定长数组的童鞋麻烦出门直走前面左转~
一、什么是动态数组
也就是在编译时无法确定数组长度,程序在运行时需要动态分配内存空间的数组,比如需要根据输入(cin>>n)中的n来确定的数组长度。此时,你不能这样:
int arr[n]; // error: C2057: 应输入常量表达式
否则C++编译器必然会报错说len的大小不能确定,因为这种申明数组的方式默认了数组的大小需要在编译时确定;同时你也不能这样:
int arr[] = new int[n]; //error: C2440: “初始化”: 无法从“int *”转换为“int []”
编译器会说不能将int*型转为int[]型,因为用new开辟的内存空间都会返回这段内存的首地址,所以应该这样写:
int *arr = new int[n];
二、定义数组
1、定义一维数组
法1:
int *p = new int[n];
法2:
vector<int> arr(n,0);//若使用法二需要引入头文件 #include <vector>